#[derive(Debug, Clone, PartialEq)]
pub enum Type {
    Int,
    Void,
    Array(ArrayType),
    Function(FunctionType),
}

#[derive(Debug, Clone, PartialEq)]
pub struct FunctionType {
    pub ret_ty: Box<Type>,     // 返回值类型
    pub params_type: Vec<Type>,// 参数列表
}

#[derive(Debug, Clone, PartialEq)]
pub struct ArrayType {
    pub contained: Box<Type>,  // 元素类型，可能是 Int 或 Array
    pub num_elements: Option<usize>, // 元素数量
}

#[allow(dead_code)]
pub fn typecheck(_input: String) {}
